
#include <GL\gl.h>

void desenhar_cadeira1( GLfloat tamanho, GLfloat rotacao);
void desenhar_cadeira2( GLfloat tamanho, GLfloat rotacao);


/*======================== Função desenhar_cadeira =======================*/

/**
        Função para desenhar uma cadeira.
        
        @param tamanho é o tamanho do objeto. // TODO: Não funciona muito bem
        @param rotacao é a rotação do objeto em torno do próprio eixo.
 */

void desenhar_cadeira( GLfloat tamanho, GLfloat rotacao)
{
    
    /* Faz a orientação do objeto no espaço */
    glRotatef( rotacao, 0, 1, 0 );
    glScalef( tamanho, tamanho, tamanho );
    glTranslatef( 0, -6, 0 );
    
    desenhar_cadeira1( tamanho,  rotacao );
    desenhar_cadeira2( tamanho,  rotacao );
}



/*======================== Função desenhar_cadeira1 ======================*/

/**
        Função para desenhar um dos blocos que formam a cadeira.
        
        @param tamanho é o tamanho do objeto. 
        @param rotacao é a rotação do objeto em torno do próprio eixo.
 */

void desenhar_cadeira1( GLfloat tamanho, GLfloat rotacao)
{
    /* Definindo as dimensões do objeto */
    GLfloat altura = 4;         /* Altura do objeto                  */
    GLfloat largura = 2;        /* largura do objeto                 */
    GLfloat profundidade = .3;  /* profundidade do objeto       */
    GLfloat altura_mundo = 2;   /* Altura em relação ao chÃ£o    */
    
    /* Definindo a orientaçãoo do objeto */
    glTranslatef( 0, altura_mundo, 0 );
    
    /* Definindo a textura do objeto */
    glBindTexture ( GL_TEXTURE_2D, idTextura[2] );
    
    glBegin( GL_QUADS );
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura,  profundidade);

    /* Face posterior */
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura, -profundidade);

    /* Face superior */
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura,  altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);

    /* Face inferior */
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura, -altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);

    /* Face lateral direita */
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);

    /* Face lateral esquerda */
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);  

    glEnd();
}



/*======================== Função desenhar_cadeira1 ======================*/

/**
        Função para desenhar um dos blocos que formam a cadeira.
        
        @param tamanho é o tamanho do objeto. 
        @param rotacao é a rotação do objeto em torno do próprio eixo.
 */

void desenhar_cadeira2( GLfloat tamanho, GLfloat rotacao)
{
    /* Definindo as dimensões do objeto */
    GLfloat altura = 2;         /* Altura do objeto                  */
    GLfloat largura = 2;        /* largura do objeto                 */
    GLfloat profundidade = 2;   /* profundidade do objeto       */
    GLfloat altura_mundo = -6;  /* Altura em relaçao ao chÃ£o    */
    
    /* Definindo a orientação do objeto */
    glTranslatef( 0, altura_mundo, 1.7 );
    
    /* Definindo a textura do objeto */
    glBindTexture ( GL_TEXTURE_2D, idTextura[3] );
    
    glBegin( GL_QUADS );
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura,  profundidade);

    /* Face posterior */
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura, -profundidade);

    /* Face superior */
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura,  altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);

    /* Face inferior */
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura, -altura, -profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);

    /* Face lateral direita */
    glTexCoord2f(1.0f, 0.0f); glVertex3f( largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( largura,  altura, -profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( largura, -altura,  profundidade);

    /* Face lateral esquerda */
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-largura, -altura, -profundidade);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(-largura, -altura,  profundidade);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(-largura,  altura,  profundidade);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-largura,  altura, -profundidade);  

    glEnd();
}

